// PROGRAMA : SCRPBE04(BATCH = > JCL2)
// :(GERADO A PARTIR DO SCRPP004)
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : ESTATISTICAS DE EMISSAO DOS ATESTADOS DE ANTECEDENTES
// TOTALIZANDO PRO DIA.
// PROGRAMADOR:
// DATA : 12/08/2002
// OBS : ESTE PROGRAMA DEVE SER RODADADO COM O "JCL2"
// :

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrpbe04Report;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Relatorio;
import br.com.vti.sisp_sicrim.antigo.model.SicCadnovo;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrpbe04 OBJETIVO : ESTATISTICAS DE EMISSAO DOS ATESTADOS DE ANTECEDENTES TOTALIZANDO PRO DIA. *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/scrpbe04")
public class Scrpbe04 {
	// Views utilizadas
	SicCadnovo sicCadnovoView = new SicCadnovo();
	// Telas/relatorios utilizados
	Scrpbe04Report report;
	// Includes utilizados
	// Areas globais / session // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	private int jCont = 0;
	private int jCont1 = 0;
	// private int dtini;
	private String dtfim;

	Relatorio relatorio;
	Scrpbe04 scrpbe04Anterior;
	private String faseproc = "0";

	private Relatorio preMapas() {
		primeiraVez = true;
		relatorio = new Relatorio(primeiraVez, sessao);
		relatorio.setNavegar("../scrpbe04/executar");
		relatorio.setTitulo("RELATORIO:ESTATISTICAS DE EMISSAO DOS ATESTADOS DE ANTECEDENTES TOTALIZANDO PRO DIA");
		result.include("relatorio", relatorio);
		sessao.setAtributo("SCRPBE04", this);
		relatorio.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		faseproc = "0";
		return relatorio;
	}

	public Scrpbe04(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public InputStreamDownload executar(Relatorio relatorio) {
		try {
			return main(relatorio);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private InputStreamDownload main(Relatorio prelatorio) throws Exception {
		if (prelatorio == null) {

			preMapas();

			return null;
		} else {
			restaurarEstados(prelatorio);
		}

		if (faseproc == null) {

			preMapas();

			return null;
		}
		// //DEFINE PRINTER(EMF = 1)
		// RELATORIO 1 PS=60 LS=132 SG=OFF
		report = new Scrpbe04Report();
		report.setPageSize(60);
		report.setLineSize(132);
		// RELATORIO

		// DATA INICIAL
		report.setDatini("01012002");
		// DATA FINAL
		report.setDatfim("09082002");
		if (UtilBean.validarMascara(report.getDatini(), "ddMMyyyy")) {
			report.gravaRelatorio(2);
			// UtilBean.mensagemTexto("DATA INICIAL INVALIDA");
		}

		if (UtilBean.extraiDigitos(report.getDatini(), 8, 5, 4) < 1998) {
			report.gravaRelatorio(3);
			// UtilBean.mensagemTexto("ANO INVALIDO < 1998");
		}

		if (UtilBean.validarMascara(report.getDatfim(), "ddMMyyyy")) {
			report.gravaRelatorio(4);
			// UtilBean.mensagemTexto("DATA FINAL INVALIDA");
		}

		if (UtilBean.extraiDigitos(report.getDatfim(), 8, 5, 4) < 1998) {
			report.gravaRelatorio(5);
			// UtilBean.mensagemTexto("ANO INVALIDO < 1998");
		}

		report.setDtini(report.getDatini() + "");

		// report.setDtini(funcoes.sissd002(Long.valueOf(UtilBean.inverteDataToYYYYMMDD(report.getDtini())))+"");

		dtfim = report.getDatfim();
		// dtfim = funcoes.sissd002(Long.valueOf(UtilBean.inverteDataToYYYYMMDD(dtfim)))+"";
		if (Long.valueOf(UtilBean.inverteDataToYYYYMMDD(report.getDtini())) > Long.valueOf(UtilBean.inverteDataToYYYYMMDD(dtfim))) {

			report.gravaRelatorio(6);
			// UtilBean.mensagemTexto("DATA INICIAL > DATA FINAL");
		}

		report.gravaRelatorio(1);
		// UtilBean.mensagemTexto("  "
		// "* GEJUSPC - GERENCIA DA JUSTICA, SEGURANCA PUBLICA E CIDADANIA"
		// "Pagina: " *PAGE-NUMBER(EMF)
		// "* STI- SUBGERENCIA DE TECNOLOGIA DA INFORMCAO - VIVA CIDADAO"
		// "Data..: " *DATE "* INSTITUICAO DE IDENTIFICACAO"
		// "* ATESTADOS DE ANTECEDENTES EMITIDOS" "PERIODO: "
		// scrpbe04A.getDatini() " -" scrpbe04A.getDatfim() "-"
		// "*** TOTAL DE ATESTADOS EMITIDOS  EM:" "-");
		// RELATORIO
		detalhe();
		rodape();
		return report.imprimir();
	}

	private void detalhe() throws Exception {
		while (sicCadnovoView.leituraDataRegFaixa(Long.valueOf(UtilBean.inverteDataToYYYYMMDD(report.getDtini())), Long.valueOf(UtilBean.inverteDataToYYYYMMDD(dtfim)))) {
			if (sicCadnovoView.getTipoRg().equals("ET")) {
				report.setDtini(sicCadnovoView.getDataReg() + "");
				report.setDatini(report.getDtini() + "");
				jCont++;
				report.setJcont(jCont);
				jCont1++;
				report.setJcont1(jCont1);

			}

			if (sicCadnovoView.quebraNovodatareg()) {
				totalDia();
				jCont = 0;
			}
		}
		sicCadnovoView.fecha();
	}

	private void rodape() throws ParseException, JRException {
		report.saltaLinhas(3);
		report.gravaRelatorio(7);
	}

	private void totalDia() throws ParseException, JRException {
		report.gravaRelatorio(8);
		report.saltaLinhas(1);
	}

	private void restaurarEstados(Relatorio prelatorio) {
		this.scrpbe04Anterior = (Scrpbe04) sessao.getAtributo("SCRPBE04");
		if (prelatorio != null) {
			relatorio = prelatorio;
		} else {
			relatorio = this.scrpbe04Anterior.relatorio;
		}

		faseproc = scrpbe04Anterior.faseproc;

	}
}
